#include <iostream>
using namespace std;

int main(int argc, const char *argv[]){
    int *p1 = new int;
    *p1 = 1234;
    cout << *p1 << endl; // 1234
    
    // new 允许在分配空间的同时对该空间初始化
    int *p2 = new int(); // 分配空间的同时用0来初始化
    cout << *p2 << endl; // 0
    int *p3 = new int(100); // 分配空间的同时用100来初始化
    cout << *p3 << endl; // 100

    // 释放分配分配的空间
    // delete []p1; // 单个空间释放时使用[] 结果不可预知
    delete p1;
    delete p2;
    delete p3;
    // delete p3; // 报错 重复释放 double free

    // 防止对野指针误操作
    p1 = nullptr;
    p2 = nullptr;
    p3 = nullptr;

    return 0;
}